# -*- coding: utf-8 -*-

# Create your views here.
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse

from ..models import Cotizaciones
from ..forms import CotizacionesForm


# COTIZACIONES

def listado_cotizaciones(request, moneda='USD'):
    """Listado de Cotizaciones
    lista todas las cotizaciones segun moneda
    """
    if request.user.is_authenticated():
        todo = Cotizaciones.objects.filter(moneda=moneda)
        variables = RequestContext(request, {
            'todo': todo,
            'moneda': moneda,
        })
        return render_to_response('listado_cotizaciones.html', variables)
    else:
        return HttpResponseRedirect('/login/?next=%s' % request.path)


def pesos_a_dolares_compra(monto, fecha_cambio):
    """
    Calcula el cambio de pesos a dolares compra segun monto dado y fecha de cotizacion.

    :param monto: monto en pesos a cambiar a dolares
    :param fecha_cambio: fecha de cotizacion de moneda
    :return: monto en dolares
    """
    cotizacion_dia = Cotizaciones.objects.filter(fecha=fecha_cambio, moneda="USD")
    if cotizacion_dia:
        valor_compra = cotizacion_dia[0].compra
        monto_dolares = round(float(monto), 2) / round(float(valor_compra), 2)
    else:
        monto_dolares = 0
    return monto_dolares


def pesos_a_dolares_inter(monto, fecha_cambio):
    cotizacion_dia = Cotizaciones.objects.filter(fecha=fecha_cambio, moneda="USD")
    if cotizacion_dia:
        valor_compra = cotizacion_dia[0].interbancario
        monto_dolares = round(float(monto), 2) / round(float(valor_compra), 2)
    else:
        monto_dolares = 0
    return monto_dolares


def dolares_a_pesos_compra(monto, fecha_cambio):
    cotizacion_dia = Cotizaciones.objects.filter(fecha=fecha_cambio, moneda="USD")
    if cotizacion_dia:
        valor_compra = cotizacion_dia[0].compra
        monto_pesos = round(float(monto), 2) * round(float(valor_compra), 2)
    else:
        monto_pesos = 0
    return monto_pesos


def agregar_cotizaciones(request):
    """Agrega Cotizaciones"""
    if request.user.is_authenticated():
        if request.method == 'POST':
            form = CotizacionesForm(request.POST)
            if form.is_valid():
                _form = form.save(commit=False)
                fecha = form.cleaned_data['fecha']
                moneda = form.cleaned_data['moneda']
                if not Cotizaciones.objects.filter(fecha=fecha, moneda=moneda):
                    _form.save()
                    return HttpResponseRedirect('/cotizaciones/listado/')
                else:
                    todo = Cotizaciones.objects.filter(moneda=moneda)
                    variables = RequestContext(request, {
                        'todo': todo,
                        'moneda': moneda,
                        'msg': 'No se puede agregar esa cotizacion porque ya existe.',
                    })
                    return render_to_response('listado_cotizaciones.html', variables)
        else:
            form = CotizacionesForm()
        variables = RequestContext(request, {'form': form})
        return render_to_response('agregar_cotizaciones.html', variables)
    else:
        return HttpResponseRedirect('/login/?next=%s' % request.path)